package vidas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.util.TreeMap;


public class Movil extends Figura{
  int k,m,carga;
 protected TreeMap<Integer, Integer> teclaCod;
  private boolean flag_cargado=false;
   
    
    public Movil(Integer x0, Integer y0, Integer w0, Integer h0, Color c, 
            Lienzo l,TreeMap<Integer, Integer> tc, boolean flag_carga){
        super(x0, y0, w0, h0, c, l);
        teclaCod=tc;
       flag_cargado = flag_carga;
    }
  
    @Override
    public void dibujate(Graphics g) {
        g.setColor(color);
        k=x;m=y;
        g.fillRect(x, y, w, h);
    }

    

     public void keyTyped(KeyEvent e) {}
     public void keyReleased(KeyEvent e) {}
     public void keyPressed(KeyEvent e) {
        try {

            getClass().getMethod("tecla" + teclaCod.get(e.getKeyCode()).toString(),
                    (Class[]) null).invoke(this, (Object[]) null);
            ira();
        } catch (Exception ex) {

        }
    }

    public void tecla0(){

        y-=dy;
    }
    public void tecla1(){

        y+=dy;
      }
    public void tecla2(){

        x-=dx;
    }
    public void tecla3(){

        x+=dx;
    }


/*
    protected void pierdeVida(int i) {
        try {
            vida =vida+i;
            getClass().getMethod("sinVida" + Boolean.valueOf(vida.equals(Integer.valueOf(0))).toString(), (Class[]) null).invoke(this, (Object[]) null);
        } catch (Exception ex) {}
    }
    
    public void sinVidatrue(){
        this.lienzo.getF().remove(this);
        this.lienzo.repaint();
    }
    public void sinVidafalse(){
        
    }
*/



    @Override
    public void colisionoCon(Movil c) {
       // System.out.println("a Movil lo choco un Movil");
        c.rebota();
    }

  

    public void rebota() {
    ira(k,m);    
    }    
    
    @Override
    public void colisionoCon(Figura c) {
        c.colisionoCon(this);    
    }

    @Override
    public void colisionoCon(Pared c) {
        c.colisionoCon(this);
    }

  
  //**************************************************************************************************************//

  //METODO PARA VER SI INGRESO ALGUIEN A LA CARGA
    public void ingresoOrigen(){
            
     try {
            System.out.println("veo si esta cargado ");
            getClass().getMethod("cargado" + flag_cargado, (Class[]) null).invoke(this, (Object[]) null);

     } catch (Exception ex) {}
    }
  
    public void cargadotrue(){
        System.out.println("esta cargado"+ flag_cargado);
        colisionoCon(this);
        this.lienzo.repaint();        
    }

    public void cargadofalse(){
         try {
            System.out.println("no esta cargado "+flag_cargado);
            

     } catch (Exception ex) {}

       // flag_cargado=true;
        System.out.println("lo cargue "+flag_cargado);
    }

    

  
//**************************************************************************************************************//

  //METODO PARA VER SI INGRESO ALGUIEN A LA DESCARGA
    public void ingresoDestino(){
        


     try {
         

     System.out.println("veo si esta descargado");
            getClass().getMethod("descargar" + flag_cargado, (Class[]) null).invoke(this, (Object[]) null);

     } catch (Exception ex) {}
    }

    public void descargartrue(){
   try {
            System.out.println("esta cargado "+flag_cargado);
           
            flag_cargado=false;
       } catch (Exception ex) {}
    }

    public void descargarfalse(){
        System.out.println("esta descargado"+ flag_cargado);
        this.ira(k-1,m-1);
        this.lienzo.repaint();
       
    }

    @Override
    public void colisionoCon(Base c) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
